package tencent;

import java.util.HashSet;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.TreeSet;

public class _1_元素成0的最小步骤 {
    //题目描述
    //给一个正整数n 和m  然后输入n个正整数
    //一次操作定义如下:
    //输出当前元素中 最小的大于0的正整数  然后所有大于0的正整数统统减去m
    //问m次操作 每次的输出是多少
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int m = scan.nextInt();
        int n = scan.nextInt();
        HashSet<Integer> set = new HashSet<>();
        for(int i=0;i<m;++i){
            set.add(scan.nextInt());//接收字符
        }
        PriorityQueue<Integer> queue = new PriorityQueue<Integer>(n);//最多n个元素
        for(int i:set){
            queue.offer(i);
        }
        for(int i=0;i<n;++i){
            if(queue.isEmpty()) System.out.println(0);
            else{//已经减去i次n了
                while(queue.peek() <= i*n) queue.poll();
                if(queue.isEmpty()) System.out.println(0);
                else {
                    int now = queue.poll();
                    System.out.println(now - i*n);
                    if(now > i*n){
                        queue.offer(now);
                    }
                }
            }
        }
    }
}
